package com.git.contractmanagement.entity.dto;

import lombok.Data;

/**
 * API响应类
 * 统一API响应格式
 */
@Data
public class ApiResponse<T> {
    // 状态码
    private int code;
    // 消息
    private String message;
    // 数据
    private T data;

    // 成功响应 - 带数据
    public static <T> ApiResponse<T> success(T data) {
        return new ApiResponse<>(200, "success", data);
    }

    // 成功响应 - 自定义消息
    public static <T> ApiResponse<T> success(String message, T data) {
        return new ApiResponse<>(200, message, data);
    }

    // 失败响应 - 自定义状态码和消息
    public static <T> ApiResponse<T> fail(int code, String message) {
        return new ApiResponse<>(code, message, null);
    }

    // 失败响应 - 默认500状态码
    public static <T> ApiResponse<T> fail(String message) {
        return new ApiResponse<>(500, message, null);
    }

    // 私有构造方法
    private ApiResponse(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }
}